{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "![](https://raw.githubusercontent.com/Qinbf/tf-model-zoo/master/README_IMG/01.jpg)\n",
    "AI MOOC： **www.ai-xlab.com**  \n",
    "如果你也是AI爱好者，可以添加我的微信一起交流：**sdxxqbf**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn import preprocessing\n",
    "from sklearn import linear_model\n",
    "# 数据是否需要标准化\n",
    "scale = False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 载入数据\n",
    "data = np.genfromtxt(\"LR-testSet.csv\", delimiter=\",\")\n",
    "x_data = data[:,:-1]\n",
    "y_data = data[:,-1]\n",
    "    \n",
    "def plot():\n",
    "    x0 = []\n",
    "    x1 = []\n",
    "    y0 = []\n",
    "    y1 = []\n",
    "    # 切分不同类别的数据\n",
    "    for i in range(len(x_data)):\n",
    "        if y_data[i]==0:\n",
    "            x0.append(x_data[i,0])\n",
    "            y0.append(x_data[i,1])\n",
    "        else:\n",
    "            x1.append(x_data[i,0])\n",
    "            y1.append(x_data[i,1])\n",
    "\n",
    "    # 画图\n",
    "    scatter0 = plt.scatter(x0, y0, c='b', marker='o')\n",
    "    scatter1 = plt.scatter(x1, y1, c='r', marker='x')\n",
    "    #画图例\n",
    "    plt.legend(handles=[scatter0,scatter1],labels=['label0','label1'],loc='best')\n",
    "    \n",
    "plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;LogisticRegression<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>LogisticRegression()</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "LogisticRegression()"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "logistic = linear_model.LogisticRegression()\n",
    "logistic.fit(x_data, y_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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N28erly5YrtZR4fDgW3btvm8FnawaNEi7NixA++//z4yMzP1Ho7uJk+ejOzsbPzqV7/S/Lk7af6MBpaYmIjExMQOt3v11Vfx05/+tPX7qqoq5OXlYcuWLRgzZoyaQ1RVsMcvxePxABBLx80slNegsrISEydOxKhRo7B+/XrTBy5AZO8BK4uJicGoUaOwZ8+e1hO2x+PBnj17sGjRIn0HR6oTBAE/+MEPsG3bNuzbt4+By794PB7d/uYzeAlDenq6z/fdu3cHAGRnZyMtLU2PIWnqo48+wieffII77rgDPXv2xOnTp/H8888jOzvb1LMuoaisrERubi769++PVatW4fz5860/S0lJ0XFk2ikrK8OlS5dQVlYGt9vd2udowIABrf8nrGTJkiWYN28ebr31VowePRqrV69GY2MjHnroIb2HpomGhgYUFxe3fl9SUoLCwkL06tXL72+i1SxcuBCbNm3Cjh07EB8f35rn5HQ6ERcXp/PotLF06VJMnToV6enpqK+vx6ZNm7Bv3z787W9/02dAutQ4WUxJSYmtSqW/+OILYeLEiUKvXr2E2NhYISMjQ3j88ceFiooKvYemmfXr1wsAJG92MW/ePMnj37t3r95DU82aNWuE9PR0ISYmRhg9erRw6NAhvYekmb1790r+vufNm6f30FQn9399/fr1eg9NMw8//LDQv39/ISYmRkhMTBQmTZok/P3vf9dtPMx5ISIiIlMx/0V6IiIishUGL0RERGQqDF6IiIjIVBi8EBERkakweCEiIiJTYfBCREREpsLghYiIiEyFwQsRERGZCoMXIiIiMhUGL0RERGQqDF6IiIjIVBi8EBERkan8fy2cJ+CjwbNTAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "if scale == False:\n",
    "    # 画图决策边界\n",
    "    plot()\n",
    "    x_test = np.array([[-4],[3]])\n",
    "    y_test = (-logistic.intercept_ - x_test*logistic.coef_[0][0])/logistic.coef_[0][1]\n",
    "    plt.plot(x_test, y_test, 'k')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "         0.0       0.96      0.94      0.95        47\n",
      "         1.0       0.94      0.96      0.95        53\n",
      "\n",
      "    accuracy                           0.95       100\n",
      "   macro avg       0.95      0.95      0.95       100\n",
      "weighted avg       0.95      0.95      0.95       100\n",
      "\n"
     ]
    }
   ],
   "source": [
    "predictions = logistic.predict(x_data)\n",
    "\n",
    "print(classification_report(y_data, predictions))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
